package cn.tt.tuantuanerp.tuantuanerp.product.webapi.service.impl;

/**
 * OSS图片业务逻辑层
 *
 * @author gudiwen
 * @version 0.0.1
 */

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

@Service
public class Upload {
    @Value("${aliyun.endpoint}")
    String endpoint;
    @Value("${aliyun.accessKeyId}")
    String accessKeyId;
    @Value("${aliyun.accessKeySecret}")
    String accessKeySecret;
    @Value("${aliyun.bucketName}")
    String bucketName;

    /**
     * 上传图片到阿里云
     * @param objectName
     * @param pic
     * @throws Exception
     */
    public boolean uploadImage(
            String objectName,
            MultipartFile pic)  throws Exception {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 创建上传文件的元信息
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setObjectAcl(CannedAccessControlList.PublicRead);
    /*    objectMetadata.setContentType("image/jpg");*/
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName,
                pic.getInputStream(),objectMetadata);
        // 上传阿里云
        ossClient.putObject(putObjectRequest);
        //关闭OSSClient。
        ossClient.shutdown();
        return true;
    }

    /**
     * 删除阿里云文件
     * @param objectName  文
     */
    public void deleteFile(
            String objectName) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 删除文件。如需删除文件夹，请将ObjectName设置为对应的文件夹名称。如果文件夹非空，则需要将文件夹下的所有object删除后才能删除该文件夹。
        ossClient.deleteObject(bucketName, objectName);
//        System.out.println("删除完成");
        // 关闭OSSClient。
        ossClient.shutdown();
    }
}
